﻿using SqlSugar;
using static System.Net.WebRequestMethods;
using System.Reflection;
using demo1.Entity;
using demo1.Dto;

namespace demo1.Context
{
    public class Dbcontext

    {
        public  SqlSugarClient InitDbContext()
            
        {
            var db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = "server=localhost;uid=root;pwd=123456;database=Demo_test;SslMode=none;",
                DbType = DbType.MySql,
                IsAutoCloseConnection = true,//自动释放数据务，如果存在事务，在事务结束后释放
                InitKeyType = InitKeyType.Attribute,
                ConfigureExternalServices = new ConfigureExternalServices
                {
                    //注意:  这儿AOP设置不能少
                    EntityService = (c, p) =>
                    {
                        /***高版C#写法
                         * 支持string?和string，实体字段没有加?代表建表时该字段不能为null
                         * ***/
                        if (p.IsPrimarykey == false && new NullabilityInfoContext().Create(c).WriteState is NullabilityState.Nullable)
                        {
                            p.IsNullable = true;
                        }
                    }
                }

            });
            db.DbMaintenance.CreateDatabase();
            db.CodeFirst.SetStringDefaultLength(255).InitTables(typeof(UserInfo));
            db.CodeFirst.SetStringDefaultLength(255).InitTables(typeof(Books));
            db.CodeFirst.SetStringDefaultLength(255).InitTables(typeof(Teather));
            db.CodeFirst.SetStringDefaultLength(255).InitTables(typeof(PeopleEntity));

            return db;
        }


    }
}

/***
 * --Entity
 *    数据库表字段实体
 *    
 * --Interface
 *   接口定义和服务注册
 *   
 * --controller
 *   api接口实现
 *   
 * --Service
 *   操作数据库
 *   
 * --Dto
 *   一般类的定义
 *   
 * --Context
 *  数据库连接
 * 
 * 
 * 
 * 
 * 
 */
